package com.hxkj.service;

import com.alibaba.fastjson.JSONObject;
import com.hxkj.domain.po.LabelExt;
import com.hxkj.domain.po.LabelManagement;
import com.hxkj.domain.po.LabelUsageInfo;
import com.hxkj.domain.vo.LabelManagementVO;
import com.platform.common.domain.result.ResultDataStruct;
import com.platform.common.domain.result.ResultMessageStruct;
import com.platform.common.domain.result.ResultPageStruct;
import com.platform.common.domain.to.PageTo;

import java.util.List;

public interface LabelConfService {

    /**
     * 新增
     * @param jsonObject
     * @return
     * @throws Exception
     */
    void save(JSONObject jsonObject) throws Exception;

    void saveLabel(LabelManagement labelManagement) throws Exception;

    /**
     * 获取单条数据
     * @param labelManagement
     * @return
     * @throws Exception
     */
    LabelManagement get(LabelManagement labelManagement) throws Exception;

    /**
     * 列表
     * @param labelManagement
     * @return
     * @throws Exception
     */
    ResultPageStruct<LabelManagementVO> getLabelList(LabelManagement labelManagement, PageTo pageParam) throws Exception;

    /**
     * 修改
     * @param jsonObject
     * @return
     * @throws Exception
     */
    void modify(JSONObject jsonObject)throws Exception;

    /**
     * 删除
     * @param labelIds
     * @return
     * @throws Exception
     */
    void remove(String labelIds)throws Exception;


/************************标签扩展表相关业务****************************/

    /**
     * 扩展表和用法表的新增修改
     * @param jsonObject
     * @return
     * @throws Exception
     */
    ResultMessageStruct editLabelPlus(JSONObject jsonObject) throws Exception;

    /**
     * 扩展表和用法表的删除
     * @param jsonObject
     * @return
     * @throws Exception
     */
    ResultMessageStruct deleteLabelPlus(JSONObject jsonObject) throws Exception;


    /**
     * 新增
     * @param labelExt
     * @return
     * @throws Exception
     */
    ResultMessageStruct saveLabelExt(LabelExt labelExt) throws Exception;

    /**
     * 列表
     * @param labelExt
     * @return
     * @throws Exception
     */
    ResultDataStruct<List<LabelExt>> getLabelExt(LabelExt labelExt) throws Exception;

    /**
     * 修改
     * @param labelExt
     * @return
     * @throws Exception
     */
    ResultMessageStruct modifyLabelExt(LabelExt labelExt)throws Exception;

    /**
     * 删除
     * @param labelExt
     * @return
     * @throws Exception
     */
    ResultMessageStruct removeLabelExt(LabelExt labelExt)throws Exception;



/************************标签使用情况表相关业务****************************/


    /**
     * 新增
     * @param labelUsageInfo
     * @return
     * @throws Exception
     */
    ResultMessageStruct saveLabelUsage(LabelUsageInfo labelUsageInfo) throws Exception;

    /**
     * 列表
     * @param labelUsageInfo
     * @return
     * @throws Exception
     */
    ResultDataStruct<List<LabelUsageInfo>> getLabelUsage(LabelUsageInfo labelUsageInfo) throws Exception;

    /**
     * 修改
     * @param labelUsage
     * @return
     * @throws Exception
     */
    ResultMessageStruct modifyLabelUsage(LabelUsageInfo labelUsage)throws Exception;

    /**
     * 删除
     * @param labelUsage
     * @return
     * @throws Exception
     */
    ResultMessageStruct removeLabelUsage(LabelUsageInfo labelUsage)throws Exception;

}
